const Compiler = require('./Compiler')
const NodeEnvironmentPlugin = require('./node/NodeEnvironmentPlugin.js')

const webpack = function(options) {
    // 校验options
    // 实例化compiler 对象
    let compiler = new Compiler(options.context)
    compiler.options = options
    // 初始化NodeEnvironmentPlugin(让compiler具体文件读写能力)
    new NodeEnvironmentPlugin().apply(compiler)
    // 挂载所有plugins插件至compiler对象身上
    if (options.plugins && Array.isArray(options.plugins)) {
        for (const plugin of options.plugins) {
            plugin.apply(compiler)
        }
    }
    // 挂载所有webpack内置的插件（处理入口文件的插件比较重要）
    // compiler.options = new WebpackOptionsApply().process(options, compiler)

    // 返回compiler对象即可
    return compiler

}

module.exports = webpack